
package controle;

import java.io.*;
import java.util.Iterator;
import java.util.Vector;
import javax.servlet.*;
import javax.servlet.http.*;
import modelo.Categoria;
import persistencia.CategoriaDAO;

/**
 *
 * @author aldiene
 */
public class ServletCategoria extends HttpServlet {
   
  
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        String acao = request.getParameter("acao");

        if (acao.equals("salvar")) {
             salvar(request, response);

        } else if (acao.equals("listar")) {
               getCategorias(request, response);

        } else if (acao.equals("excluir")) {
                excluir(request, response);
                
        }else if (acao.equals("alterar")) {
                alterar(request, response);
                
    }else if (acao.equals("recuperar")) {
                getRecuperaCategoria(request, response);
    }
    
    }
    
     @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 
      @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
    protected void salvar(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(true);

        String nome_categoria = request.getParameter("nome_categoria");

        Categoria categoria = new Categoria(nome_categoria);

        String msg = "";
        if (CategoriaDAO.salvar(categoria)) {
            System.out.print("Servlet: cadastrado com sucesso");
            msg = "Categoria cadastrado com sucesso";

        } else {
            msg = "Erro ao cadastrar categoria";
            System.out.print("Servlet: erro ao cadastrar categoria");
        }
        request.setAttribute("msg", msg);
        getServletContext().getRequestDispatcher("/CadastrarCategorias.jsp").forward(request, response);

    }
 
        //METODO PARA LISTAR AS CATEGORIAS
    protected void getCategorias(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);

        try {
            CategoriaDAO a = new CategoriaDAO();//cria CategoriaDAO

            Vector categorias = a.getCategorias();

            request.setAttribute("categorias", categorias);
            getServletContext().getRequestDispatcher("/ListarExcluirCategorias.jsp").forward(request, response);
        } catch (Exception e) {
            System.out.println("Erro n servlet:");
            e.printStackTrace();
            out.close();
        }
    } 
    
        //METODO PARA recuprar uma  CATEGORIA
        protected void getRecuperaCategoria(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
                   
           try {
            CategoriaDAO a = new CategoriaDAO();
            
            int id_categoria = Integer.parseInt(request.getParameter("id_categoria"));
            Categoria cat = a.getRecuperaCategoria(id_categoria);
            
            request.setAttribute("categoria", cat);
            
            getServletContext().getRequestDispatcher("/AlterarCategorias.jsp").forward(request, response);
            } catch (Exception e) {
            e.printStackTrace();
        }
    }
        
        //METODO PARA ALTERAÇÃO DOS ATRIBUTOS DA CATEGORIA
        protected void alterar(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(true);

        try {
            int id_categoria = Integer.parseInt(request.getParameter("id_categoria"));
            String nome_categoria = request.getParameter("nome_categoria");
              
           Categoria categoria = new Categoria(nome_categoria);
            categoria.setId_categoria(id_categoria);

            CategoriaDAO dao = new CategoriaDAO();
            dao.alterar(categoria);
           
            session.setAttribute("categoria", dao);
            getServletContext().getRequestDispatcher("/AlterarCategoria.jsp").forward(request, response);
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
 }
        protected void excluir(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(true);

        int id_categoria = Integer.parseInt(request.getParameter("id_categoria"));
        CategoriaDAO dao = new CategoriaDAO();
        dao.excluir(id_categoria);
        getServletContext().getRequestDispatcher("/ServletCategoria?acao=listar").forward(request, response);


    }
}
